//
// Copyright 2011 ReedRex Corp
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// BookService.h
// Cloud BookShelf
//
// Created by Shunichi Takagi on 11/02/25.
//

#import <Foundation/Foundation.h>

#import "Azure/TableEntry.h"
#import "StorageClient.h"
#import "Book.h"
#import "Queries.h"

#define BOOK_ENTITY_NAME "Book"

@interface BookService : NSObject {
@private
	ObjectContext *tableContext;
	bool enabledBatch;
	
	BlobContext *blobContext;
}

@property (nonatomic, retain) ObjectContext *tableContext;
@property (nonatomic) bool enabledBatch;
@property (nonatomic, retain) BlobContext *blobContext;

- (id) initWithClient:(StorageClient *)aClient enabledBatch:(bool) aEnabledBatch;
- (void) commit;
- (Book *) insert:(Book *)aBook;
- (Book *) update:(Book *)aBook;
- (void) remove:(Book *)aBook;
- (NSArray *) find:(NSString *)aQuery;
- (NSArray *) findByQueries:(Queries *)aQueries;

- (UIImage *) fetchImage:(Book *)aBook;
- (void) storeImage:(UIImage *)aImage with:(Book *)aBook;

@end
